package com.ynh.mediaclient.jni;

public class YNHAudioRecordJni {

    static {
        System.loadLibrary("YNHAudioRecord");
    }

    public YNHAudioRecordJni() {
        init();
    }

    /**
     * 开始录音
     * 返回值：-1:失败 | 0：成功
     **/
    public native int start();

    /**
     * 开始录音
     * 参数： rpath：48000采样率录音文件存放的绝对路径
     * 参数： dpath：16000采样率录音文件存放的绝对路径
     * 返回值：-1:失败 | 0：成功
     **/
    public native int convert(String rpath, String dpath);

    /**
     * 录音前获取缓冲区大小
     * 返回值：缓冲区大小
     **/
    public native int getBufferSize();

    /**
     * 录音前获取缓冲区大小
     * 参数 ：buffer 缓冲数据
     * 参数： size  缓冲数据大小
     * 返回值：缓冲数据大小
     **/
    public native int read(byte[] buffer, int size);

    /**
     * 停止录音
     * 参数：port： 0:Line-in | 3: Mic
     * 返回值：-1:失败 | 0：成功
     **/
    public native int stop();

    /**
     * 设置录音音量（二级增益）
     * 参数：port：0:Line-in|3:Mic
     * 参数：volume：0~32
     * 参数：channel：2
     * 返回值：-1:失败|0：成功
     */
    public native int setVolume(int port, int channel, int volume);

    /**
     * 设置录音音量（一级增益）
     * 参数：port：0:Line-in|3:Mic
     * 参数：volume：0~32
     * 参数：channel：2
     * 返回值：-1:失败|0：成功
     */
    public native int setInc(int port, int channel, int volume);

    /**
     * 设置录音静音
     * 参数：port：0:Line-in|3:Mic
     * 参数：channel：2
     * 参数：mode：0
     * 返回值：-1:失败|0：成功
     */
    public native int setMute(int port, int channel, char mode);

    public native void init();

    public native void destory();

    public native double getPcmDB();
}
